//#pragma once
//
//#include <iostream>
//#include <vector>
//
//extern "C" {
//	#include <libavutil/opt.h>
//	#include <libavcodec/avcodec.h>
//	#include <libavformat/avformat.h>
//}
//
//#include "base_ds.h"
//
//using namespace std;
//
//class FFmpegEncoder {
//
//public:
//	FFmpegEncoder(int p_width, int p_height, AVCodecID p_video_codec);
//	~FFmpegEncoder();
//
//	bool init();
//	bool encodeFrame(unsigned char* yuv_data, EncodeBuffer& encode_buf);
//	bool flush(vector<EncodeBuffer>& encode_bufs);
//	void close();
//
//private:
//	int width;
//	int height;
//	AVCodecID video_codec;
//	AVFormatContext* pFormatCtx;
//	AVStream* video_st;
//	AVCodecContext* pCodecCtx;
//	AVCodec* pCodec;
//	AVPacket pkt;
//	uint8_t* picture_buf;
//	AVFrame* pFrame;
//
//	long frame_idx;
//};
